package com.share.device.domain.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;

/**
 * 柜机管理DTO
 * 
 * @author         
 * @date 2025-06-24
 */
@Schema(description = "柜机管理DTO")
public class CabinetManagementDTO
{
    /** 柜机ID */
    @NotNull(message = "柜机ID不能为空")
    @Schema(description = "柜机ID")
    private Long cabinetId;

    /** 操作类型（deploy:部署, maintain:维护, remove:移除, reset:重置） */
    @NotNull(message = "操作类型不能为空")
    @Schema(description = "操作类型（deploy:部署, maintain:维护, remove:移除, reset:重置）")
    private String operationType;

    /** 目标位置ID */
    @Schema(description = "目标位置ID")
    private Long targetLocationId;

    /** 维护人员ID */
    @Schema(description = "维护人员ID")
    private Long maintainerId;

    /** 维护描述 */
    @Size(max = 500, message = "维护描述不能超过500字符")
    @Schema(description = "维护描述")
    private String maintenanceDesc;

    /** 充电宝ID列表（用于批量操作） */
    @Schema(description = "充电宝ID列表")
    private List<Long> powerBankIds;

    /** 插槽编号列表（用于批量操作） */
    @Schema(description = "插槽编号列表")
    private List<String> slotNos;

    /** 备注 */
    @Size(max = 500, message = "备注不能超过500字符")
    @Schema(description = "备注")
    private String remark;

    public void setCabinetId(Long cabinetId) 
    {
        this.cabinetId = cabinetId;
    }

    public Long getCabinetId() 
    {
        return cabinetId;
    }

    public void setOperationType(String operationType) 
    {
        this.operationType = operationType;
    }

    public String getOperationType() 
    {
        return operationType;
    }

    public void setTargetLocationId(Long targetLocationId) 
    {
        this.targetLocationId = targetLocationId;
    }

    public Long getTargetLocationId() 
    {
        return targetLocationId;
    }

    public void setMaintainerId(Long maintainerId) 
    {
        this.maintainerId = maintainerId;
    }

    public Long getMaintainerId() 
    {
        return maintainerId;
    }

    public void setMaintenanceDesc(String maintenanceDesc) 
    {
        this.maintenanceDesc = maintenanceDesc;
    }

    public String getMaintenanceDesc() 
    {
        return maintenanceDesc;
    }

    public void setPowerBankIds(List<Long> powerBankIds) 
    {
        this.powerBankIds = powerBankIds;
    }

    public List<Long> getPowerBankIds() 
    {
        return powerBankIds;
    }

    public void setSlotNos(List<String> slotNos) 
    {
        this.slotNos = slotNos;
    }

    public List<String> getSlotNos() 
    {
        return slotNos;
    }

    public void setRemark(String remark) 
    {
        this.remark = remark;
    }

    public String getRemark() 
    {
        return remark;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("cabinetId", getCabinetId())
            .append("operationType", getOperationType())
            .append("targetLocationId", getTargetLocationId())
            .append("maintainerId", getMaintainerId())
            .append("maintenanceDesc", getMaintenanceDesc())
            .append("powerBankIds", getPowerBankIds())
            .append("slotNos", getSlotNos())
            .append("remark", getRemark())
            .toString();
    }
} 